package com.aaron.nettystudy.serialize;

/**
 * @Author 荣燊
 * @Description 序列化与反序列化接口
 * @Date 15:42 2021/5/16
 * @Param
 * @return
 **/
public interface Serializer {
    //序列化，对象转换为字节数组
    byte[] serialize(Object object);

    //反序列化，字节数组转换为特定类型的的对象
    /*
    其中第一个<T>是与传入的参数Class<T>相对应的，相当于返回值的一个泛型，
    后面的T是返回值类型，代表方法必须返回T类型的（由传入的Class<T>决定）
    Class<T>表示T类型的字节码文件，意思是：Class<T> 相当于Class<T> c = T.class,clazz.getName可以获取类名
     */
    <T> T deserialize(byte[] bytes, Class<T> clazz);
}
